package br.com.vertigo.sgci.session;

import java.util.Arrays;
import java.util.List;

import org.jboss.seam.annotations.Name;
import org.jboss.seam.framework.EntityQuery;

import br.com.vertigo.sgci.entity.Projeto;

@SuppressWarnings({ "unchecked", "serial" })
@Name("projetoList")
public class ProjetoList extends EntityQuery {

	private static final String[] RESTRICTIONS = { "lower(projeto.nomeProjeto) like concat(lower(#{projetoList.projeto.nomeProjeto}),'%')", };

	private Projeto projeto = new Projeto();

	@Override
	public String getEjbql() {
		return "select projeto from Projeto projeto" + orderna();
	}
	
	public String orderna(){
		String inicial = " order by projeto.nomeProjeto asc";
		if(getOrder() != null){
			inicial = "";
		}
		if(this.projeto.getNomeProjeto() != null && !this.projeto.getNomeProjeto().equals("")){
			inicial = "";
		}
		return inicial;
	}

	@Override
	public Integer getMaxResults() {
		return 25;
	}

	public Projeto getProjeto() {
		return projeto;
	}

	@Override
	public List<String> getRestrictions() {
		return Arrays.asList(RESTRICTIONS);
	}
	
	public String retornarSituacao(Projeto p){
		if (p.isIsAtivo()){
			return "Ativo";
		}else{
			return "Inativo";
		}
	}
	
	public List<Projeto> getProjetosAtivos() {
		return getEntityManager().createQuery(
				"select projeto from Projeto projeto "
						+ "WHERE projeto.isAtivo = true")
				.getResultList();
	}

	 
	public List<Projeto> projetosCoordenados(){		
		String sql = "select projeto from Projeto projeto, Usuario usuario "
			+ "WHERE projeto.isAtivo = true and projeto.usuario = usuario ";		
		if(!getIdentity().hasRole("Gerente")){
			sql = sql + " and usuario.login = '" + getIdentity().getUsername() + "'";
		}
		sql = sql + " order by projeto.nomeProjeto ";
		return getEntityManager().createQuery(sql).getResultList();		
		
	}

	public List getResultListSorted() {
		String sql = "select projeto from Projeto projeto order by projeto.isAtivo desc, projeto.nomeProjeto ";
		return getEntityManager().createQuery(sql).getResultList();
	}
	
}
